package queue

// An FIFO queue
//type Queue []int  //已有类型 只支持int类型
type Queue []interface{} // 接口不限定类型

// Pushes the element into the queue
func (q *Queue) Push(v int) {
	// 传入限定为int
	*q = append(*q, v) // 对已有类型进行扩展，使用指针接收者
}

// Pops element from head.
func (q *Queue) Pop() int {
	head := (*q)[0]
	*q = (*q)[1:]
	return head.(int)
	// 弹出限定为整数
}

// Returns if the queue is empty or not.
func (q *Queue) IsEmpty() bool {
	return len(*q) == 0
}
